#pragma once
#include "Ref.h"
#include <functional>
POCELAIN_NAMESPACE_BEGIN
template<class ...Args>
class TFunction : public std::function<Args...> , public Ref
{
public:
    typedef TFunction<Args...> type;
    typedef std::function<Args...> stdtype;
    TFunction(stdtype fn):stdtype(fn){};
    TFunction(const type &other) = delete;
    TFunction(type &&other) = delete;
    type &operator=(const type &other) = delete;
    type &operator=(type &&other) = delete;
};
POCELAIN_NAMESPACE_END
